package edu.pe.cayetano.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.apache.commons.beanutils.DynaBean;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.framework.Configuration;
import edu.pe.cayetano.framework.DAOException;
import edu.pe.cayetano.model.bean.DiagnosticoDefinitivoBean;
import edu.pe.cayetano.model.bean.DiagnosticoPresuntivoBean;
import edu.pe.cayetano.model.bean.PacienteBean;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;
import edu.pe.cayetano.util.Utilitario;

public class DiagnosticoDefinitivoDAO extends BaseDAO{

	String 					schema			= Configuration.getSchemaDB();
	
	public DiagnosticoDefinitivoDAO(Connection cnx) {
		super(cnx);
	}

	public BResult buscarDiagnosticoDefinitivo(String codigo) throws Exception {

		DiagnosticoDefinitivoBean 	diagTO 			= null;
		PreparedStatement   		pstmt 		 	= null;
		ResultSet 					rs 			 	= null;
		BResult						ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT");
			query.append(" FILEHC,ESTADO_GENERAL,TEJIDO_PERIODENTAL,TEJIDO_DENTAL,OCLUSION,OTROS,OBJETIVOS_TRATAMIENTO,COMENTARIO,ESTADO_ID"); 	
			query.append(" FROM "+schema+"DIAGNOSTICO_DEFINITIVO"); 
			query.append(" WHERE FILEHC=?");
			System.out.println("DiagnosticoDefinitivoDAO:: buscarDiagnosticoDefinitivo:: "+query.toString());
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,codigo.substring(2, codigo.length()));
			rs=pstmt.executeQuery();
			ret = new BResult();
			if(rs.next()){
				diagTO=new DiagnosticoDefinitivoBean();
				diagTO.setFileHC(rs.getString(1));
				diagTO.setEstadoGeneral(rs.getString(2));
				diagTO.setTejidoPeriodental(rs.getString(3));
				diagTO.setTejidoDental(rs.getString(4));
				diagTO.setOclusion(rs.getString(5));
				diagTO.setOtros(rs.getString(6));
				diagTO.setObjetivosTratamiento(rs.getString(7));
				diagTO.setComentario(rs.getString(8));
				diagTO.setEstadoID(rs.getInt(9));
				ret.setObject(diagTO);
				ret.setCode(0);
			}else{
				ret.setCode(1);
			}
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}

	
	public BResult editaDiagnosticoDefinivitoArchivoHC(DynaBean dyna) throws Exception {
		BResult					ret				= null;
		PreparedStatement		pstmt 		 	= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" UPDATE "+schema+"DIAGNOSTICO_DEFINITIVO SET ESTADO_GENERAL=?,TEJIDO_PERIODENTAL=?,TEJIDO_DENTAL=?,OCLUSION=?,");
			query.append(" OTROS=?,OBJETIVOS_TRATAMIENTO=? WHERE FILEHC=?"); 
			String filehc = Utilitario.getPropertyDynaBean(dyna,"filehc");
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,Utilitario.getPropertyDynaBean(dyna,"estadogeneral"));
			pstmt.setString(2,Utilitario.getPropertyDynaBean(dyna,"tejidoPeriodental"));
			pstmt.setString(3,Utilitario.getPropertyDynaBean(dyna,"tejidoDental"));
			pstmt.setString(4,Utilitario.getPropertyDynaBean(dyna,"oclusion"));
			pstmt.setString(5,Utilitario.getPropertyDynaBean(dyna,"otros"));
			pstmt.setString(6,Utilitario.getPropertyDynaBean(dyna,"objetivos"));
			pstmt.setString(7,filehc.substring(2,filehc.length()));
			pstmt.executeUpdate();	
			ret = new BResult();
			ret.setCode(0);
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	} 
	
	public BResult editaDiagnosticoDefinivitoArchivoHCxMedico(DynaBean dyna) throws Exception {
		BResult					ret				= null;
		PreparedStatement		pstmt 		 	= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" UPDATE "+schema+"DIAGNOSTICO_DEFINITIVO SET COMENTARIO=?,ESTADO_ID=? WHERE FILEHC=?"); 
			String filehc = Utilitario.getPropertyDynaBean(dyna,"filehc");
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,Utilitario.getPropertyDynaBean(dyna,"comentario"));
			pstmt.setString(2,Utilitario.getPropertyDynaBean(dyna,"cboEstado"));
			pstmt.setString(3,filehc.substring(2,filehc.length()));
			pstmt.executeUpdate();	
			ret = new BResult();
			ret.setCode(0);
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	} 
	
	public BResult insertaDiagnosticoDefinivitoArchivoHC(DynaBean dyna) throws Exception {

		BResult					ret				= null;
		PreparedStatement		pstmt 		 	= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" INSERT INTO "+schema+"DIAGNOSTICO_DEFINITIVO VALUES (?,?,?,?,?,?,?,?,?)"); 
			String filehc = Utilitario.getPropertyDynaBean(dyna,"filehc");
			pstmt = getConnection().prepareStatement(query.toString());
			pstmt.setString(1,filehc.substring(2,filehc.length()));
			pstmt.setString(2,Utilitario.getPropertyDynaBean(dyna,"estadogeneral"));
			pstmt.setString(3,Utilitario.getPropertyDynaBean(dyna,"tejidoPeriodental"));
			pstmt.setString(4,Utilitario.getPropertyDynaBean(dyna,"tejidoDental"));
			pstmt.setString(5,Utilitario.getPropertyDynaBean(dyna,"oclusion"));
			pstmt.setString(6,Utilitario.getPropertyDynaBean(dyna,"otros"));
			pstmt.setString(7,Utilitario.getPropertyDynaBean(dyna,"objetivos"));
			pstmt.setInt(8,0);	
			pstmt.setString(9,"");	
			pstmt.executeUpdate();	
			ret = new BResult();
			ret.setCode(0);
		}catch(Exception e){
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	} 
	

	public BResult buscarArchivoxDiagnostico(String archivo) throws Exception {

		String 						schema			= Configuration.getSchemaDB();
		PacienteBean 				pacienteTO		= new PacienteBean();
		PreparedStatement   		pstmt 		 	= null;
		ResultSet 					rs 			 	= null;
		BResult						ret				= null;
		try{		
			StringBuffer query  = new StringBuffer();
			query.append(" SELECT NOMBRE_COMPLETO,OBJETIVOS_TRATAMIENTO,ES.SEDE_ID FROM "+schema+"DIAGNOSTICO_DEFINITIVO A INNER JOIN "+schema+"HISTORIA_CLINICA_DETALLE B");
			query.append(" ON A.FILEHC=B.FILEHC INNER JOIN "+schema+"HISTORIA_CLINICA C");
			query.append(" ON B.NROHC=C.NROHC INNER JOIN "+schema+"V_PACIENTE D");
			query.append(" ON D.PACIENTE_ID=C.PACIENTE_ID");
			query.append(" INNER JOIN "+schema+"ESPECIALIDAD ES ON ES.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID");
			query.append(" WHERE A.FILEHC=?"); 
			pstmt = getConnection().prepareStatement(query.toString());
			System.out.println("buscarArchivoxDiagnostico"+query.toString());
			pstmt.setString(1,archivo);
			rs=pstmt.executeQuery();
			ret = new BResult();
			if(rs.next()){
				pacienteTO.setNombreCompleto(rs.getString(1));
				pacienteTO.setTieneDF("SI");
				pacienteTO.setObjetivoTratamientoDF(rs.getString(2));
				pacienteTO.setSedeID(rs.getInt(3));
				ret.setObject(pacienteTO);
				ret.setCode(0);
			}else{
				pacienteTO.setTieneDF("NO");
				ret.setObject(pacienteTO);
				ret.setCode(0);
			}
		}catch(Exception e){
			System.out.println("DiagnosticoDefinitivoDAO:::buscarArchivoxPT:: "+e.getMessage());
			ret = new BResult();
			ret.setCode(-1);
			ret.setMessage(e.getMessage());
		}finally{
			try{
				pstmt.close();
				rs.close();
			}
			catch(Exception e){
				throw new DAOException(e.getMessage());	
			}
		}
		return ret;
	}
}
